<?php
class accountancy {
	private $conexion;
	private $bd;

	//Datos registro de pago
	private $data = array();
	
	//establecer conexion a la base
	function __construct($id) {
		$this->establecerConexion();
		$this->setFkOrigen($id);
	}
	private function establecerConexion() {
		$arr_localhost = array('localhost', '127.0.0.1');
		if (!in_array($_SERVER['HTTP_HOST'],$arr_localhost)) {
			$this->conectarServicio(STG_HOST,STG_USER,STG_PASSWORD);
			$this->seleccionarBD(STG_DB);
		} else {
			$this->conectarServicio(DEV_HOST,DEV_USER,DEV_PASSWORD);
			$this->seleccionarBD(DEV_DB);
		}
	}
	
	private function seleccionarBD($BD) {
		try {
			$this->bd = mysql_select_db($BD,$this->conexion);
			if (1000 < mysql_errno() && mysql_errno() < 2056) throw new Exception("Error al intentar seleccionar la base de datos(".$BD.").<br>");
		} catch (Exception $e) {
			echo mysql_errno(). " : " .mysql_error();
			exit();
		}
	}
	private function conectarServicio($host,$user,$pwd) {
		try {
			$this->conexion = mysql_connect($host,$user,$pwd);
			if (1000 < mysql_errno() && mysql_errno() < 2056) throw new Exception("Error al intentar conectar base de datos en el ".$_SERVER['HTTP_HOST']."<br>");
		} catch (Exception $e) {
			echo mysql_errno(). " : " .mysql_error();
			exit();
		}
	}

	//setters y getters de los datos del registro de pago
	public function setTitulo($titulo) {
		if (!empty($titulo)) { $this->data['titulo'] = $titulo; return 1; }
		else {
			$this->data['titulo'] = '';
			return 0;
		}
	}
	public function getTitulo() {
		return $this->data['titulo'];
	}
	/*---------------------------------------------------------------------------------------*/
	public function setDescripcion($descripcion) {
		if (!empty($descripcion)) { $this->data['descripcion'] = $descripcion; return 1; }
		else {
			$this->data['descripcion'] = '';
			return 0;
		}
	}
	public function getDescripcion() {
		return $this->data['descripcion'];
	}
	/*---------------------------------------------------------------------------------------*/
	public function setNota($nota = null) {
		$this->data['nota'] = $nota;
		return 1;
	}
	public function getNota() {
		return $this->data['nota'];
	}
	/*---------------------------------------------------------------------------------------*/
	public function setFechaVencimiento($fecha = null) {
		$pattern = '%^(((([012]?[1-8]|[01]?9|[12]0)[-/](0?[1-9]|1[0-2]))|((29|30)[-/](0?[13-9]|1[0-2]))|31[-/](0?[13578]|1[02]))[-/](0*[1-9][0-9]*|0[0-9]))|29[-/]0?2[-/](([0-9]*([02468][48]|[13579][26]|[2468]0)(00)*)|0*[48]|00)$%';
		if (!empty($fecha)) { //si pone una fecha, valida que sea correcta, sino, tira error.
			if (preg_match($pattern, $fecha)) { $this->data['fecha_vencimiento'] = $fecha; return 1; }
			else { $this->data['fecha_vencimiento'] = ''; return 0; }
		}
		else { $this->data['fecha_vencimiento'] = ''; return 1; } //pero la fecha no es una campo obligatorio.
	}
	public function getFechaVencimiento() {
		return $this->data['fecha_vencimiento'];
	}
	/*---------------------------------------------------------------------------------------*/
	public function setFechaPagado($fecha = null) {
		$pattern = '%^(((([012]?[1-8]|[01]?9|[12]0)[-/](0?[1-9]|1[0-2]))|((29|30)[-/](0?[13-9]|1[0-2]))|31[-/](0?[13578]|1[02]))[-/](0*[1-9][0-9]*|0[0-9]))|29[-/]0?2[-/](([0-9]*([02468][48]|[13579][26]|[2468]0)(00)*)|0*[48]|00)$%';
		if (!empty($fecha)) {
			if (preg_match($pattern, $fecha)) { $this->data['fecha_pagado'] = $fecha; return 1; }
			else { $this->data['fecha_pagado'] = ''; return 0; }
		} 
		else { $this->data['fecha_pagado'] = ''; return 1; }
	}
	public function getFechaPagado() {
		return $this->data['fecha_pagado'];
	}
	/*---------------------------------------------------------------------------------------*/
	public function setEstado($estado) {
		$this->data['estado'] = (int)$estado;
		return 1;
	}
	public function getEstado() {
		return $this->data['estado'];
	}
	/*---------------------------------------------------------------------------------------*/
	public function setMonto($monto = null) {
		if (!empty($monto)) { $this->data['monto'] = (float)$monto; return 1; }
		else { $this->data['monto'] = ''; return 0; }
	}
	public function getMonto() { //viene la URL de la imagen
		return $this->data['monto'];
	}
	/*---------------------------------------------------------------------------------------*/
	public function setFkOrigen($fkOrigen) {
		$this->data['fk_origen'] = $fkOrigen;
		return 1;
	}
	public function getFkOrigen() {
		return $this->data['fk_origen'];
	}
	/*---------------------------------------------------------------------------------------*/
	public function setFkDestino($fkDestino) {
		$this->data['fk_destino'] = $fkDestino;
		return 1;
	}
	public function getFkDestino() {
		return $this->data['fk_destino'];
	}
}
?>